package cn.doitedu.day08

import org.apache.spark.sql.SparkSession

/**
 * UDF   输入一行，返回一行
 * UDAF  输入多行，返回一行（一个组，返回一行）
 * UDTF  输入一行，返回多行 (例如炸裂函数)
 */
object T04_UDFDemo1 {

  def main(args: Array[String]): Unit = {

    val spark = SparkSession.builder().appName("UDFDemo1")
      .master("local[*]")
      .getOrCreate()

    val df = spark.read
      .option("header", "true")
      .csv("data/address.txt")

    df.createTempView("v_info")

    //注册自定义函数
    spark.udf.register("my_concat_ws", (delimiter: String, f1: String, f2: String) => {
      f1 + delimiter + f2
    })

    spark.sql(
      """
        |select name, my_concat_ws('-', province, city) address from v_info
        |""".stripMargin)
      .show()




  }

}
